class MyQueue:

    def __init__(self):
        self.stack_in = []   # 负责入队
        self.stack_out = []  # 负责出队

    def push(self, x: int) -> None:
        self.stack_in.append(x)

    def pop(self) -> int:
        if not self.stack_out:
            while self.stack_in:
                self.stack_out.append(self.stack_in.pop())
        return self.stack_out.pop()

    def peek(self) -> int:
        if not self.stack_out:
            while self.stack_in:
                self.stack_out.append(self.stack_in.pop())
        return self.stack_out[-1]

    def empty(self) -> bool:
        return not self.stack_in and not self.stack_out
# 思路
# stack_in 用来存储入队的元素；
# 只有当 stack_out 为空时，才将 stack_in 中的元素全部倒入 stack_out；
# 这样 stack_out 栈顶元素就是队首元素，实现队列的先进先出。


if __name__ == "__main__":
    # 示例测试
    q = MyQueue()
    q.push(1)
    q.push(2)
    print(q.peek())  # 输出 1
    print(q.pop())   # 输出 1
    print(q.empty()) # 输出 False